Many computing applications such as computer games, multimedia applications, office applications or the like use controls to allow users to manipulate characters or control other aspects of an application. Typically such controls are input using, for example, controllers, remotes, keyboards, mice, or the like. Unfortunately, such controls can be difficult to learn, thus creating a barrier between a user and such applications. Often, such controls may be different than actual actions for which the controls are used. For example, a game control that causes a game character to swing a baseball bat may be a combination of buttons and may not correspond to an actual motion of swinging the baseball bat, or a control to reposition a view on a screen, such as repositioning the view of a map in a map application, may be a selection of arrow buttons on a keyboard and may not correspond to the actual desired repositioning of the map view.
Typically, each computing environment and even computing applications in the same computing environment require unique controllers. For example, a user may interact with a typical television remote control to control aspects of a television and may use a mouse or a keyboard to interact with a personal computer. The many types of controllers and the many varied methods of interacting with each controller may also create a barrier between a user and such systems and/or applications. Not only do the multiple types of controllers require the user to learn multiple methods of inputs for control, but the user may have to learn different controls for different controllers for each computing environment with which the user interacts.